{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "initial_id",
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    ""
   ]
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 1、使用FUNCTION_CALL模式",
   "id": "53aeca0e59e2d6e6"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T03:27:18.144357Z",
     "start_time": "2025-10-01T03:27:09.509345Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "from langchain.memory import ConversationBufferMemory\n",
    "from langchain_core.prompts import ChatPromptTemplate, PromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "8\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "\n",
    "\n",
    "# 提供提示词模板（以ChatPromptTemplate为例）\n",
    "prompt_template = ChatPromptTemplate.from_messages([\n",
    "    (\"system\",\"你是一个乐于助人的ai助手，根据用户的提问，必要时调用Search工具，使用互联网检索数据\"),\n",
    "    (\"system\",\"{agent_scratchpad}\"), #用于存储和传递Agent的思考过程，保留所有历史步骤，避免上下文丢失\n",
    "    (\"system\",\"{chat_history}\"),  #添加一个chat_history的变量，用于记录上下文的记忆\n",
    "    (\"human\",\"{input}\"),\n",
    "    # (\"placeholder\",\"{agent_scratchpad}\")\n",
    "])\n",
    "\n",
    "# 提供记忆的实例：ConversationBufferMemory\n",
    "memory = ConversationBufferMemory(\n",
    "    return_messages=True,\n",
    "    memory_key=\"chat_history\", #此值需要与提示词模板中的记录记忆的变量同名\n",
    ")\n",
    "\n",
    "# 获取Agent的实例：create_tool_calling_agent()\n",
    "agent = create_tool_calling_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    "    memory=memory,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询今天北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "631108ab648dab38",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/miniconda3/envs/pyth310/lib/python3.10/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer).\n",
      "  warnings.warn(\n",
      "/var/folders/9p/r71fhhs11052m2r7x4gfc5b80000gn/T/ipykernel_82646/34351617.py:17: LangChainDeprecationWarning: The class `TavilySearchResults` was deprecated in LangChain 0.3.25 and will be removed in 1.0. An updated version of the class exists in the :class:`~langchain-tavily package and should be used instead. To use it run `pip install -U :class:`~langchain-tavily` and import as `from :class:`~langchain_tavily import TavilySearch``.\n",
      "  search = TavilySearchResults(max_results=3)\n",
      "/var/folders/9p/r71fhhs11052m2r7x4gfc5b80000gn/T/ipykernel_82646/34351617.py:47: LangChainDeprecationWarning: Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/\n",
      "  memory = ConversationBufferMemory(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m\n",
      "Invoking: `Search` with `北京天气 2023年10月5日`\n",
      "\n",
      "\n",
      "\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '北京历史天气预报2023年10月份', 'url': 'https://www.tianqihoubao.com/lishi/beijing/month/202310.html', 'content': '| 日期 | 天气状况(白天/夜间) | 最高/最低气温 | 风力风向(白天/夜间) |\\n ---  --- |\\n| 2023年10月01日 | 晴 / 晴 | 26℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月02日 | 多云 / 多云 | 25℃ / 14℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月03日 | 多云 / 多云 | 25℃ / 15℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月04日 | 晴 / 晴 | 24℃ / 9℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月05日 | 多云 / 多云 | 22℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月06日 | 多云 / 多云 | 22℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月07日 | 多云 / 小雨 | 22℃ / 11℃ | 北风 1-3级 / 北风 1-3级 | [...] 前一月 后一月 北京历史天气 北京10月份天气统计信息  \\n 搜索\"城市名+天气后报\"访问本站（北京天气后报）导出Excel\\n\\n### 天气状况统计\\n\\n2023年10月份北京北京天气状况统计图\\n白天天气\\n夜间天气\\n全天综合\\n\\n## 其他月份\\n\\n### 风力分布分析\\n\\n2023年10月份北京风力等级和风向分布情况图 \\n白天风力风向\\n夜间风力风向\\n全天综合\\n\\n### 关于天气后报\\n\\n天气后报提供全国34个省市所属的3146个地区的历史天气预报查询，数据来源于城市当天的天气预报信息，可以查询到历史天气气温，历史风向，历史风力等历史天气状况。\\n\\n### 快速链接\\n\\n### 联系我们\\n\\n关于我们 | 免责声明 | QQ : 1968509554 |\\n\\n版权所有 © 2012-2025 天气后报', 'score': 0.8315952}, {'title': '2023北京国庆节天气预报（冷吗+有雨吗）', 'url': 'http://bj.bendibao.com/news/2022929/327618.shtm', 'content': '【导语】：十一国庆节小长假到来，气象北京官方发布了国庆节期间（10月1日至7日）天气预报。\\n\\n\\u3000\\u3000总体来看，假日期间天气较好，以晴到多云为主，白天气温舒适，紫外线较强，户外活动请注意防晒;早晚体感偏凉，注意适当增添衣物。\\n\\n\\u3000\\u3000另外，受冷空气影响，10月2日夜间有小雨，9月29日和10月4-5日有3、4级偏北风，阵风6级左右，且10月2日夜间-3日能见度有所下降，最低能见度3～5公里，请注意防范。\\n\\n中秋节(9月29日)夜间天气晴朗少云，能见度佳，适宜赏月，但体感偏凉，户外赏月需添衣。\\n\\n\\u3000\\u3000》》2023北京国庆节旅游攻略（预约+活动）\\n\\n\\u3000\\u3000》》2023北京国庆花篮参观需要提前预约吗？\\n\\n企业文化 | 广告服务 | 关于我们 | 联系我们 | 诚聘英才 | 意见建议 | 本地宝APP\\n\\nCopyright © 2006- 2025 All rights reserved. 本地宝 |粤ICP备17055554号 违法和不良信息举报电话： [...] 本地民生\\n 办事\\n 社保\\n 公积金\\n 居住证\\n 交通\\n 地铁\\n 旅游\\n 景点\\n 活动\\n 教育\\n 网点\\n 招聘\\n 特惠\\n\\n 生活指南\\n 民生\\n 生活\\n 交通\\n 社会\\n 旅游\\n 国内\\n 教育\\n\\n北京本地宝 > 资讯快递 > 北京天气预报 > 2023北京国庆节天气预报（冷吗+有雨吗）\\n\\n2023-09-28 10:36【我要纠错】\\n\\n下载指南\\n\\n分享至\\n\\n【导语】：十一国庆节小长假到来，气象北京官方发布了国庆节期间（10月1日至7日）天气预报。\\n\\n\\u3000\\u3000总体来看，假日期间天气较好，以晴到多云为主，白天气温舒适，紫外线较强，户外活动请注意防晒;早晚体感偏凉，注意适当增添衣物。\\n\\n\\u3000\\u3000另外，受冷空气影响，10月2日夜间有小雨，9月29日和10月4-5日有3、4级偏北风，阵风6级左右，且10月2日夜间-3日能见度有所下降，最低能见度3～5公里，请注意防范。\\n\\n中秋节(9月29日)夜间天气晴朗少云，能见度佳，适宜赏月，但体感偏凉，户外赏月需添衣。\\n\\n\\u3000\\u3000》》2023北京国庆节旅游攻略（预约+活动）\\n\\n\\u3000\\u3000》》2023北京国庆花篮参观需要提前预约吗？ [...] 赏花国庆旅游攻略五一旅游攻略考研个人养老金观日出攻略亲子游展会露营汽车消费券房贷利率助企纾困婴幼儿照护养老保险缴费补贴申领医保报销生育办事迎春花市异地就医婚姻服务健康证办理电动车上牌赏银杏供热消费券外地人办事学校课后服务中考一分一段表端午节养老金领取清明节云招聘数字人民币免费流量公园免费预约免费景点春节全攻略医保电子凭证赏红叶攻略人口普查国庆晚会四价疫苗生育福利大全省考保障性租赁住房机场大巴购房首付房屋限购地铁调整国家植物园养老保险买断医院挂号车牌摇号竞价产假四价疫苗育儿假扫墓专题事业单位招聘已关闭北京电动自行车北京环球度假区双减政策买房攻略中高考生福利中考录取分数线单针疫苗学法减分中考国博月壤展最低工资高考文惠券春节酒席举办车展北京菊花文化节教师资格证流感疫苗寒假放假时间身份证异地消费券学区划分开学限行公积金贷款公务员\\n\\n本地宝郑重声明：本文仅代表作者个人观点，与本地宝无关。其原创性及文中陈述内容未经本站证实，本地宝对本文及其中全部或者部分内容的真实性、完整性、及时性不作任何保证和承诺，请网友自行核实相关内容。\\n\\n2023北京国庆节天气预报（冷吗+有雨吗） - 北京本地宝', 'score': 0.7557276}, {'title': '北京市2023年的天氣歷史中國 - Weather Spark', 'url': 'https://tw.weatherspark.com/h/y/131055/2023/%E5%8C%97%E4%BA%AC%E5%B8%82%E3%80%81%E4%B8%AD%E5%9C%8B2023%E5%B9%B4%E6%AD%B7%E5%8F%B2%E5%A4%A9%E6%B0%A3', 'content': '0 公里/小時 無風   2 公里/小時 軟風   6 公里/小時 輕風   13 公里/小時 微風   21 公里/小時 和風   29 公里/小時 清風   40 公里/小時 強風   50 公里/小時 疾風   63 公里/小時 大風   76 公里/小時 烈風   89 公里/小時 風暴   103 公里/小時 暴風   117 公里/小時 颶風級  按蒲福氏風級進行色彩編碼成帶的每小時報告風速。 陰影叠加表示夜晚和民用曙暮光。  北京市 2023年 每小時風向 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    無風北東南西  按羅盤方位點進行色彩編碼的每小時報告風速。 陰影叠加表示夜晚和民用曙暮光。  北京市 2023年 氣壓 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    按照例如 METAR 報告中的高度計設定測量的每日氣壓（灰色長條）。 資料來源 [...] | 北京市2023年的天氣歷史 中國 此報告的資料來自北京首都国际机场。 檢視所有附近的氣象站  此報告顯示了北京市的過去天氣，並提供了2023年的天氣歷史。 它突出了我們的所有可用歷史天氣資料系列，包含北京市2023年的溫度歷史。 您可以透過點選圖表，從年份進一步檢視特定月份，甚至特定的一天的報告。  北京市2023年的溫度歷史 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    每日報告溫度範圍（灰色長條）和 24 小時高溫（紅色刻點）和低溫（藍色刻點），置於日均高溫（淺紅線）和低溫（淺藍線）上方，有 25%-75% 和 10%-90% 百分位帶。  北京市 2023年 每小時溫度 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    嚴寒   -9°C 極冷   0°C 寒冷   7°C 冷   13°C 涼爽   18°C 舒適   24°C 溫暖   29°C 熱   35°C 酷熱 [...] 每小時報告的溫度，以色彩編碼成帶。 陰影叠加表示夜晚和民用曙暮光。  © OpenStreetMap contributors  將北京市與另一個城市相比較：  北京市 2023年 雲量 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    0% 晴   20% 晴時多雲   40% 多雲   60% 多雲時陰   80% 陰天   100%  無顯著性云未偵測到雲雲幕及能見度良好  每小時報告的雲量，按天空的雲覆蓋百分比分類。    北京市 2023年 觀測天氣 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    霧霾毛毛雨小雨中雨大雨凍雨霰雪粒微雪中雪大雪雹雷雨  按類別進行色彩編碼的每小時觀測天氣（按嚴重程度排序）。 若有多項報告則顯示最嚴重的代碼。  北京市 2023年 的日照和曙暮光小時數 連結  下載  比較  平均值', 'score': 0.64773196}]\u001B[0m\u001B[32;1m\u001B[1;3m今天（2023年10月5日）北京的天气情况如下：\n",
      "\n",
      "- **天气状况**：多云\n",
      "- **最高气温**：22℃\n",
      "- **最低气温**：12℃\n",
      "- **风力风向**：北风 1-3级\n",
      "\n",
      "如果你有其他问题或需要更多信息，请告诉我！\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询今天北京的天气情况', 'chat_history': [HumanMessage(content='查询今天北京的天气情况', additional_kwargs={}, response_metadata={}), AIMessage(content='今天（2023年10月5日）北京的天气情况如下：\\n\\n- **天气状况**：多云\\n- **最高气温**：22℃\\n- **最低气温**：12℃\\n- **风力风向**：北风 1-3级\\n\\n如果你有其他问题或需要更多信息，请告诉我！', additional_kwargs={}, response_metadata={})], 'output': '今天（2023年10月5日）北京的天气情况如下：\\n\\n- **天气状况**：多云\\n- **最高气温**：22℃\\n- **最低气温**：12℃\\n- **风力风向**：北风 1-3级\\n\\n如果你有其他问题或需要更多信息，请告诉我！'}\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T03:29:01.665824Z",
     "start_time": "2025-10-01T03:28:55.114195Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "result = agent_executor.invoke({\"input\":\"上海的呢？\"})\n",
    "\n",
    "print(result)"
   ],
   "id": "1215b9859f2bcb75",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m\n",
      "Invoking: `Search` with `今天上海的天气情况`\n",
      "\n",
      "\n",
      "\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '中国气象局-天气预报-城市预报- 上海', 'url': 'https://weather.cma.cn/web/weather/58367.html', 'content': '|  |  |  |  |  |  |  |  |  |\\n ---  ---  ---  --- \\n| 时间 | 11:00 | 14:00 | 17:00 | 20:00 | 23:00 | 02:00 | 05:00 | 08:00 |\\n| 天气 |\\n| 气温 | 34℃ | 34.3℃ | 32℃ | 28.6℃ | 28.1℃ | 27.3℃ | 26.7℃ | 28.6℃ |\\n| 降水 | 2.3mm | 2.3mm | 2.3mm | 2.3mm | 无降水 | 无降水 | 无降水 | 无降水 |\\n| 风速 | 3.3m/s | 3.3m/s | 3m/s | 2.8m/s | 3.2m/s | 3.1m/s | 3m/s | 3.3m/s |\\n| 风向 | 西南风 | 西南风 | 东南风 | 东北风 | 东南风 | 东南风 | 东南风 | 西南风 |\\n| 气压 | 1017.1hPa | 1014.6hPa | 1014.3hPa | 1015.6hPa | 1015hPa | 1014.3hPa | 1013.7hPa | 1014.6hPa | [...] |  |  |  |  |  |  |  |  |  |\\n ---  ---  ---  --- \\n| 时间 | 08:00 | 11:00 | 14:00 | 17:00 | 20:00 | 23:00 | 02:00 | 05:00 |\\n| 天气 |\\n| 气温 | 29.1℃ | 29.9℃ | 29.5℃ | 26℃ | 24.9℃ | 23.8℃ | 23.8℃ | 23.9℃ |\\n| 降水 | 0.9mm | 1.5mm | 5.4mm | 1.6mm | 1.6mm | 0.1mm | 无降水 | 无降水 |\\n| 风速 | 3.3m/s | 3.3m/s | 3.3m/s | 2.9m/s | 2.7m/s | 3.3m/s | 3.1m/s | 3.1m/s |\\n| 风向 | 西北风 | 西北风 | 西北风 | 东北风 | 东南风 | 西北风 | 西北风 | 西北风 |\\n| 气压 | 1013.2hPa | 1012.7hPa | 1012hPa | 1012.3hPa | 1013.3hPa | 1013.3hPa | 1012.7hPa | 1012.2hPa | [...] |  |  |  |  |  |  |  |  |  |\\n ---  ---  ---  --- \\n| 时间 | 08:00 | 11:00 | 14:00 | 17:00 | 20:00 | 23:00 | 02:00 | 05:00 |\\n| 天气 |\\n| 气温 | 27.2℃ | 27℃ | 27.9℃ | 26.9℃ | 24.5℃ | 23.6℃ | 23.6℃ | 23.6℃ |\\n| 降水 | 无降水 | 无降水 | 无降水 | 无降水 | 无降水 | 无降水 | 无降水 | 无降水 |\\n| 风速 | 3.3m/s | 3.1m/s | 3.3m/s | 2.9m/s | 2.7m/s | 3.1m/s | 2.9m/s | 3.1m/s |\\n| 风向 | 东北风 | 东北风 | 东北风 | 东北风 | 东南风 | 东南风 | 东南风 | 东南风 |\\n| 气压 | 1014hPa | 1014hPa | 1012.5hPa | 1012.8hPa | 1014hPa | 1013.1hPa | 1012.3hPa | 1012.2hPa |', 'score': 0.796562}, {'title': '国庆中秋假期天气预报公布！', 'url': 'https://www.shhuangpu.gov.cn/xw/001015/20250928/e1124982-972c-419d-a4de-5cb175e303b7.html', 'content': '— 2025 — 上海天气 国庆中秋假期  \\n          节前降雨降温  \\n          上海今日雨热同在，体感潮湿闷热。徐家汇站最高气温34.6℃，闵行站为全市最高达34.9℃。中午起一些地方出现短时阵雨或雷雨，主要集中在东部、北部和南部地区，以浦东康桥镇46.5毫米为最大（11时至16时45分统计）。预计今天夜间一些地方仍有阵雨或雷雨，下班时段注意交通安全。 今日回顾 节前天气：明后两天本市有一次较明显的降水过程，主要降水时段在29日下午到30日白天，累积雨量20～40毫米，局部地区可达40～60毫米。30日白天降水较为明显，夜间雨止。气温降至30℃以下。 具体预报  \\n          29日：阴到多云有时有阵雨或雷雨，25~30℃，相对湿度95%~60%，偏北风3~4级，沿江沿海地区4~5级，雷雨时阵风7~9级。 30日：阴到多云有时有阵雨，夜里转阴到多云，24~28℃。偏北风4~5级。  \\n          假期上海天气预报', 'score': 0.741169}, {'title': '预报- 上海 - 中国天气网', 'url': 'https://www.weather.com.cn/weather/101020100.shtml', 'content': '首页 预报 预警 雷达 云图 天气地图 专业产品 资讯 视频 节气 我的天空\\n\\n更多\\n\\n台风路径 空间天气 图片 专题 环境 旅游 碳中和 气象科普 一带一路 产创平台\\n\\n国内) 本地) 国际)\\n\\n:   北京 上海 成都 杭州 南京 天津 深圳 重庆 西安 广州 青岛 武汉\\n\\n:   故宫 阳朔漓江 龙门石窟 野三坡 颐和园 九寨沟 东方明珠 凤凰古城 秦始皇陵 桃花源\\n\\n高球\\n:   佘山 春城湖畔 华彬庄园 观澜湖 依必朗 旭宝 博鳌 玉龙雪山 番禺南沙 东方明珠\\n\\n<<返回 全国\\n\\n河北下辖区域\\n\\n热门城市\\n\\n:   曼谷 东京 首尔 吉隆坡 新加坡 巴黎 罗马 伦敦 雅典 柏林 纽约 温哥华 墨西哥城 哈瓦那 圣何塞 巴西利亚 布宜诺斯艾利斯 圣地亚哥 利马 基多 悉尼 墨尔本 惠灵顿 奥克兰 苏瓦 开罗 内罗毕 开普敦 维多利亚 拉巴特\\n\\n:   亚洲 欧洲 北美洲 南美洲 非洲 大洋洲\\n\\n全国> 上海 > 城区\\n\\n 今天\\n 7天\\n 8-15天\\n 40天\\n 雷达图\\n\\n # 30日（今天）\\n\\n  小雨转阴\\n\\n  27/22℃\\n\\n  <3级\\n # 1日（明天）\\n\\n  阴 [...] /\\n\\n  27/22°C\\n 上海博物馆\\n\\n  /\\n\\n  27/22°C\\n\\n# 高清图集\\n\\n辽宁锦州今天早晨现大雾天气 能见度不佳 紫菀花开 一抹紫色惊艳秋光 河南汝州雨水连成线 路面湿滑影响出行 秋分日北京上空现日晕景观 从传统到创新 中秋节共赏“饼”纷时刻\\n\\n# 重大天气事件\\n\\n 9月30日\\n\\n  ## 国庆中秋假期华西至黄淮降雨频繁 南方多地秋老虎卷土重来\\n\\n  今天（9月30日），随着“博罗依”减弱消散，广西、云南等地雨势减弱，但局地仍有【暴雨】。国庆中秋假期首日，我国降雨将再度发展。\\n 9月29日\\n\\n  ## 广西云南等地仍有台风雨 华西地区秋雨持续发力\\n\\n  受台风“博罗依”及其残余环流影响，广西、云南等地今天（9月29日）将有强降雨天气。明天，“博罗依”影响逐渐收尾。同时，华西地区降雨连连。\\n 9月28日\\n\\n  ## 台风“博罗依”靠近华南进入核心影响时段 南方多地或现高温\\n\\n  今天（9月28日），台风“博罗依”将掠过海南南部海面，受其影响，华南沿海风雨增强，部分地区有大暴雨，局地特大暴雨，需做好防台风措施。\\n 9月27日', 'score': 0.7038554}]\u001B[0m\u001B[32;1m\u001B[1;3m今天（2023年10月5日）上海的天气情况如下：\n",
      "\n",
      "- **天气状况**：小雨转阴\n",
      "- **最高气温**：27℃\n",
      "- **最低气温**：22℃\n",
      "- **风力风向**：风速小于3级\n",
      "\n",
      "如果你需要更多信息或有其他问题，请告诉我！\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '上海的呢？', 'chat_history': [HumanMessage(content='查询今天北京的天气情况', additional_kwargs={}, response_metadata={}), AIMessage(content='今天（2023年10月5日）北京的天气情况如下：\\n\\n- **天气状况**：多云\\n- **最高气温**：22℃\\n- **最低气温**：12℃\\n- **风力风向**：北风 1-3级\\n\\n如果你有其他问题或需要更多信息，请告诉我！', additional_kwargs={}, response_metadata={}), HumanMessage(content='上海的呢？', additional_kwargs={}, response_metadata={}), AIMessage(content='今天（2023年10月5日）上海的天气情况如下：\\n\\n- **天气状况**：小雨转阴\\n- **最高气温**：27℃\\n- **最低气温**：22℃\\n- **风力风向**：风速小于3级\\n\\n如果你需要更多信息或有其他问题，请告诉我！', additional_kwargs={}, response_metadata={})], 'output': '今天（2023年10月5日）上海的天气情况如下：\\n\\n- **天气状况**：小雨转阴\\n- **最高气温**：27℃\\n- **最低气温**：22℃\\n- **风力风向**：风速小于3级\\n\\n如果你需要更多信息或有其他问题，请告诉我！'}\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 2、使用ReAct模式\n",
    "\n",
    "举例1：使用网络上现成的提示词模板结构"
   ],
   "id": "54c74b1c07e1cb38"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T03:35:37.869405Z",
     "start_time": "2025-10-01T03:35:30.559859Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "from langchain import hub\n",
    "from langchain.agents import create_react_agent\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "# 使用LangChain Hub中的官方ReAct提示模板\n",
    "prompt_template = hub.pull(\"hwchase17/react-chat\")\n",
    "\n",
    "# 提供记忆的实例\n",
    "memory = ConversationBufferMemory(\n",
    "    return_messages=True,\n",
    "    memory_key=\"chat_history\",\n",
    ")\n",
    "\n",
    "# 获取Agent的实例：create_react_agent()\n",
    "agent = create_react_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    "    memory=memory,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询2025年9月9日北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "f5915398eb87df4e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? Yes\n",
      "Action: Search\n",
      "Action Input: 2025年9月9日 北京 天气情况\n",
      "```\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '北京市2025年9月的历史天气数据（中国） - Weather Spark', 'url': 'https://zh.weatherspark.com/h/m/131055/2025/9/2025%E5%B9%B49%E6%9C%88-%E4%B8%AD%E5%9B%BD%E3%80%81%E5%8C%97%E4%BA%AC%E5%B8%82-%E7%9A%84%E5%8E%86%E5%8F%B2%E5%A4%A9%E6%B0%94', 'content': '| 北京市2025年9月的天气历史 中国 此报告的数据来自北京首都国际机场。 查看附近所有的气象站  最新报告 — 下午4:30 2025年9月11日周四    23分钟之前    UTC 08:30  呼号 ZBAA  温度  30°C 热   |  |  |  --- | | 露点 | 20°C  闷热 | | 相对湿度 | 55% |  降水  无报告  刮风  18.0每小时公里 三级风   |  |  |  --- | | 风向 | 170°, S |  云量  晴空万里   |  |  |  --- | | 能见度 | 10.00公里 或更高 | | 海拔 | 1,010毫巴 |  原始：ZBAA 110830Z 17005MPS CAVOK 30/20 Q1010 NOSIG  此报告显示北京市的过去天气，提供了2025年9月的天气历史。 它突出了我们所有的可用历史天气数据序列，包括北京市2025年9月的温度历史。 您可以通过点击图表，从年份深化至一个具体的月份，甚至具体的一天的报告。  北京市2025年9月的温度历史 2025年年秋季  链接  下载  比较  平均值 [...] 60% 大部分多云   80% 阴天   100%  无重要云未检测到云晴空万里  每小时所报告的云彩覆盖，以天空的云彩覆盖百分比分类。    2025年9月北京市的观察天气 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年    雾薄雾细雨小雨中雨大雨冻雨雨夹雪雪粒小雪中雪大雪冰雹雷雨  每小时观察到的天气，按类型着色（按严重程度的排序）。 如果存在多项报告，将显示最严重的代码。  | 白天 | 观察 | 降水 | 代码 |  ---  --- | | 9月3日周三 | Mist |  | BR | | 9月4日周四 | Mist |  | BR | | 9月5日周五 | Light Rain、Mist |  | -RA、BR | | 9月9日周二 | Recent Thunderstorm、Thunderstorm、Thunderstorm with Light Rain、Thunderstorm with Rain、Light Rain、Showers of Light Rain |  | [...] 下午4:16 | 东南 | 下午8:46 | 南 | 390,437公里 | | 4日 |  | 88%  | 上午1:17 | 西南 | 下午4:56 | 东南偏东 | 下午9:41 | 南 | 384,922公里 | | 5日 |  | 94%  | 上午2:26 | 西南偏西 | 下午5:30 | 东南偏东 | 下午10:34 | 南 | 379,365公里 | | 6日 |  | 98%  | 上午3:38 | 西南偏西 | 下午5:59 | 东南偏东 | 下午11:24 | 南 | 374,234公里 | | 7日 |  | 100%  | 上午4:50 | 西南偏西 | 下午6:25 | 东   | 8日 |  | 100%  | 上午6:03 | 西 | 下午6:49 | 东 | 上午12:13 | 南 | 369,959公里 | | 9日 |  | 99%  | 上午7:17 | 西 | 下午7:13 | 东 | 上午1:00 | 南 | 366,869公里 | | 10日 |  | 95%  | 上午8:32 | 西北偏西 | 下午7:39 | 东北偏东 |', 'score': 0.93191636}, {'title': '北京市在九月2025 的天氣：氣溫與氣候 - Climate-Data.org', 'url': 'https://zh.climate-data.org/%E4%BA%9E%E6%B4%B2/%E4%B8%AD%E5%9B%BD/%E5%8C%97%E4%BA%AC%E5%B8%82-885/r/%E4%B9%9D%E6%9C%88-9/', 'content': '##\\n\\n# 北京市 在 九月 的天氣情況\\n\\n您打算在 九月 2025 到 北京市 度假，希望天氣宜人嗎？在這裡您可以找到 北京市 在 九月 的所有天氣資訊：\\n\\n >>北京市 在 九月 的天氣與氣候概況\\n >>北京市 每月天氣 // 天氣平均值\\n >>北京市 在 九月 的天氣平均狀況\\n >>北京市 的當前溫度及天氣預報\\n\\n在 九月，北京市 平均最暖的一天是 01.09，最高溫達到 28.9°C 。最冷的一天是 29.09，最低溫約為 9.4°C 。在本月前三分之一期間，最高溫平均為 28.1°C，最低溫約為 14.5°C 。從 11 到 20 日，平均最高溫為 26.4°C，平均最低溫為 12.3°C 。月底時，最高溫達到 24.8°C，最低溫降至 10.3°C 。最溫暖的連續 10 天是 1-10，平均最高溫為 19.7°C，而最冷的連續 10 天是 21-10，平均最低溫約為 15.6°C。 [...] |  | 溫度 (°C) | 溫度 最大值 (°C) | 溫度 分鐘 (°C) | 降水量 (mm) | 平均日照時數 (小時) |\\n ---  ---  --- |\\n| 1. 九月 | 21 °C | 26 °C | 16 °C | 11.0 mm | 9.9 |\\n| 2. 九月 | 21 °C | 26 °C | 15 °C | 14.3 mm | 9.7 |\\n| 3. 九月 | 20 °C | 26 °C | 15 °C | 11.7 mm | 10.3 |\\n| 4. 九月 | 20 °C | 25 °C | 15 °C | 7.1 mm | 9.4 |\\n| 5. 九月 | 20 °C | 25 °C | 14 °C | 4.0 mm | 9.9 |\\n| 6. 九月 | 20 °C | 25 °C | 14 °C | 8.7 mm | 10.4 |\\n| 7. 九月 | 19 °C | 25 °C | 14 °C | 8.9 mm | 10.1 |\\n| 8. 九月 | 19 °C | 24 °C | 14 °C | 5.8 mm | 9.8 | [...] | 9. 九月 | 19 °C | 24 °C | 14 °C | 7.4 mm | 10.0 |\\n| 10. 九月 | 18 °C | 24 °C | 13 °C | 6.1 mm | 9.9 |\\n| 11. 九月 | 19 °C | 24 °C | 14 °C | 7.3 mm | 10.3 |\\n| 12. 九月 | 19 °C | 23 °C | 14 °C | 7.4 mm | 9.4 |\\n| 13. 九月 | 19 °C | 24 °C | 13 °C | 6.2 mm | 9.1 |\\n| 14. 九月 | 18 °C | 23 °C | 13 °C | 9.4 mm | 9.3 |\\n| 15. 九月 | 18 °C | 23 °C | 13 °C | 7.6 mm | 8.8 |\\n| 16. 九月 | 17 °C | 23 °C | 12 °C | 8.0 mm | 8.7 |\\n| 17. 九月 | 17 °C | 23 °C | 12 °C | 4.5 mm | 8.3 |', 'score': 0.9039154}, {'title': '北京2025年9月历史天气', 'url': 'https://tianqi.2345.com/wea_history/54511.htm', 'content': '切换国际城市\\n\\n确定 取消\\n\\n 2011年\\n 2012年\\n 2013年\\n 2014年\\n 2015年\\n 2016年\\n 2017年\\n 2018年\\n 2019年\\n 2020年\\n 2021年\\n 2022年\\n 2023年\\n 2024年\\n 2025年\\n\\n 1月\\n 2月\\n 3月\\n 4月\\n 5月\\n 6月\\n 7月\\n 8月\\n 9月\\n 10月\\n 11月\\n 12月\\n\\n 平均高温：27°    平均低温：18°\\n 极端高温：32°(2025-09-01)\\n 极端低温：12°(2025-09-17)\\n 平均空气质量指数：42\\n 空气最好：19 优(09月17日)\\n 空气最差：71良(09月04日) [...] | 2025-09-09 周二 | 30° | 20° | 阴~小雨 | 东南风1级 | 64 良 |\\n| 2025-09-10 周三 | 26° | 21° | 多云~阴 | 东南风1级 | 37 优 |\\n| 2025-09-11 周四 | 30° | 21° | 多云 | 南风3级 | 60 良 |\\n| 2025-09-12 周五 | 29° | 19° | 多云 | 东南风1级 | 68 良 |\\n| 2025-09-13 周六 | 29° | 20° | 多云~晴 | 西南风3级 | 50 优 |\\n| 2025-09-14 周日 | 32° | 18° | 多云 | 西北风3级 | 34 优 |\\n| 2025-09-15 周一 | 24° | 19° | 小雨~雷阵雨 | 北风2级 | 23 优 |\\n| 2025-09-16 周二 | 25° | 13° | 阴~多云 | 东北风3级 | 24 优 |\\n| 2025-09-17 周三 | 24° | 12° | 阴~晴 | 北风2级 | 19 优 | [...] | 日期 | 最高温 | 最低温 | 天气 | 风力风向 | 空气质量指数 |\\n ---  ---  --- |\\n| 2025-09-01 周一 | 32° | 22° | 多云 | 南风1级 | 35 优 |\\n| 2025-09-02 周二 | 30° | 23° | 阴~阵雨 | 南风2级 | 40 优 |\\n| 2025-09-03 周三 | 31° | 22° | 阴~多云 | 东南风2级 | 49 优 |\\n| 2025-09-04 周四 | 31° | 21° | 多云~阴 | 东南风2级 | 71 良 |\\n| 2025-09-05 周五 | 26° | 19° | 小雨~多云 | 西北风1级 | 48 优 |\\n| 2025-09-06 周六 | 31° | 18° | 晴 | 西南风1级 | 31 优 |\\n| 2025-09-07 周日 | 31° | 17° | 多云~晴 | 东北风1级 | 36 优 |\\n| 2025-09-08 周一 | 31° | 19° | 晴~雷阵雨 | 南风1级 | 27 优 |', 'score': 0.89501935}]\u001B[0m\u001B[32;1m\u001B[1;3mDo I need to use a tool? No  \n",
      "Final Answer: 根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询2025年9月9日北京的天气情况', 'chat_history': [HumanMessage(content='查询2025年9月9日北京的天气情况', additional_kwargs={}, response_metadata={}), AIMessage(content='根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。', additional_kwargs={}, response_metadata={})], 'output': '根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。'}\n"
     ]
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T03:35:57.340259Z",
     "start_time": "2025-10-01T03:35:48.948108Z"
    }
   },
   "cell_type": "code",
   "source": [
    "result = agent_executor.invoke({\"input\":\"上海的呢？\"})\n",
    "\n",
    "print(result)"
   ],
   "id": "5341553f9aa7c5bf",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? Yes\n",
      "Action: Search\n",
      "Action Input: 2025年9月9日上海的天气情况\n",
      "```\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '中国上海2025年9月的天气历史中国', 'url': 'https://zh.weatherspark.com/h/m/137446/2025/9/2025年9月-中国、中国上海-的历史天气', 'content': '凉爽   18°C   舒适   24°C   暖和   29°C   热   35°C   酷热  每小时所报告的温度，加以数带着色。 阴影叠加表示夜晚和民用曙光/暮光。  © OpenStreetMap contributors  将中国上海与另一城市相比较：  2025年9月中国上海的云量 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年  0%   晴天   20%   大部分晴天   40%   部分多云   60%   大部分多云   80%   阴天   100%  无重要云未检测到云晴空万里  每小时所报告的云彩覆盖，以天空的云彩覆盖百分比分类。  2025年9月中国上海的观察天气 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年  雾薄雾细雨小雨中雨大雨冻雨雨夹雪雪粒小雪中雪大雪冰雹雷雨  每小时观察到的天气，按类型着色（按严重程度的排序）。 如果存在多项报告，将显示最严重的代码。  | 白天 | [...] | 19501960197019801990200020102020  2016201720182019202020212022202320242025  春季夏季秋季冬季  1月2月3月4月5月6月7月8月9月10月11月12月  123456789101112131415161718192021222324252627282930 中国上海2025年9月的天气历史 中国 此报告的数据来自上海虹桥国际机场。 查看附近所有的气象站  最新报告 — 下午10:30 2025年9月28日周日    25分钟之前    UTC 14:30  呼号 ZSSS  温度  28°C 暖和   |  |  |  --- | | 露点 | 24°C  极为难受 | | 相对湿度 | 79% |  降水  无报告  刮风  10.8每小时公里 二级风   |  |  |  --- | | 风向 | 50°, NE |  云量  部分多云   701米   |  |  | 晴时多云 914米 |   |  |  |  --- | | 能见度 | 10.00公里 | | 海拔 | 1,014毫巴 | [...] 404,873公里 | | 26日 |  | 18% | 上午9:36 | 东南偏东 | 下午7:56 | 西南偏西  下午2:46 | 南 | 405,539公里 | | 27日 |  | 26% | 上午10:34 | 东南偏东 | 下午8:35 | 西南偏西  下午3:34 | 南 | 405,093公里 | | 28日 |  | 34% | 上午11:31 | 东南偏东 | 下午9:21 | 西南偏西  下午4:25 | 南 | 403,402公里 | | 29日 |  | 44% | 下午12:25 | 东南 | 下午10:12 | 西南  下午5:19 | 南 | 400,413公里 | | 30日 |  | 50% | 下午1:16 | 东南偏东 | 下午11:09 | 西南偏西  下午6:13 | 南 | 396,186公里 |  2025年9月 中国上海的湿度舒适水平 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年  干燥   13°C   舒适   16°C   潮湿', 'score': 0.9197076}, {'title': '上海2025年9月历史天气', 'url': 'https://tianqi.2345.com/wea_history/58362.htm', 'content': '切换国际城市\\n\\n确定 取消\\n\\n 2011年\\n 2012年\\n 2013年\\n 2014年\\n 2015年\\n 2016年\\n 2017年\\n 2018年\\n 2019年\\n 2020年\\n 2021年\\n 2022年\\n 2023年\\n 2024年\\n 2025年\\n\\n 1月\\n 2月\\n 3月\\n 4月\\n 5月\\n 6月\\n 7月\\n 8月\\n 9月\\n 10月\\n 11月\\n 12月\\n\\n 平均高温：33°    平均低温：26°\\n 极端高温：37°(2025-09-06)\\n 极端低温：22°(2025-09-20)\\n 平均空气质量指数：34\\n 空气最好：22 优(09月24日)\\n 空气最差：66良(09月07日) [...] | 2025-09-09 周二 | 31° | 25° | 小雨 | 西北风2级 | 28 优 |\\n| 2025-09-10 周三 | 30° | 26° | 阴~小雨 | 东北风3级 | 32 优 |\\n| 2025-09-11 周四 | 32° | 26° | 多云~阴 | 东风3级 | 37 优 |\\n| 2025-09-12 周五 | 35° | 26° | 多云~小雨 | 南风3级 | 45 优 |\\n| 2025-09-13 周六 | 34° | 26° | 阴~小雨 | 西北风2级 | 48 优 |\\n| 2025-09-14 周日 | 33° | 26° | 多云~小雨 | 东风1级 | 45 优 |\\n| 2025-09-15 周一 | 35° | 27° | 阴~多云 | 东南风2级 | 45 优 |\\n| 2025-09-16 周二 | 36° | 28° | 多云~晴 | 南风2级 | 38 优 |\\n| 2025-09-17 周三 | 37° | 25° | 阴~小雨 | 西北风2级 | 36 优 | [...] 凤翔空气质量\\n 郓城空气质量\\n 洮南空气质量\\n 南宁空气质量\\n 黑河空气质量\\n 长春空气质量\\n 新沂空气质量\\n 青州空气质量\\n 澳门空气质量\\n 内乡空气质量\\n 澧县空气质量\\n 兰溪空气质量\\n 长岭空气质量\\n 成安空气质量\\n 界首空气质量\\n 霸州空气质量\\n 射阳空气质量\\n 磁县空气质量\\n 沈阳空气质量\\n 随州空气质量\\n 洛南空气质量\\n 东台空气质量\\n 东宁空气质量\\n 二连浩特空气质量\\n 宜城空气质量\\n 长兴空气质量\\n 涿州空气质量\\n 涉县空气质量\\n 葫芦岛空气质量\\n 咸宁空气质量\\n\\n 武家庄镇天气\\n 皤滩乡天气\\n 南部矿区管委会天气\\n 潘店镇天气\\n 盘龙街道天气\\n 坂东镇天气\\n 盘湾镇天气\\n 青锋农场天气\\n 雉街彝族苗族乡天气\\n 磻溪镇天气\\n 林堡乡天气\\n 树堡乡天气\\n 潘庄镇天气\\n 潘庄镇天气\\n 保家镇天气\\n 前岗乡天气\\n 鲍集镇天气\\n 阳春乡天气\\n 辉渠镇天气\\n 盐井镇天气\\n 玉河镇天气\\n 独石沟乡天气\\n 绵山镇天气\\n 保兴镇天气\\n 宝秀镇天气\\n 城关镇天气\\n 兴隆洼镇天气\\n 文峰区天气\\n 嘎达布其镇天气\\n 宝林镇天气', 'score': 0.90965873}, {'title': '上海九月, 2025 天气', 'url': 'https://www.meteoprog.com/cn/weather/Szanghaj/month/september/', 'content': \"Deutsch\\n English\\n Español\\n Français\\n Hrvatski\\n Indonesia\\n Latviešu\\n Lietuvių\\n Magyar\\n Nederlands\\n O'zbek\\n Português\\n Polski\\n Romnă\\n Slovenský\\n Suomi\\n Svenska\\n Türkçe\\n Čeština\\n Ελληνική\\n Български\\n Српски\\n Русский\\n Українська\\n عربي\\n 汉语\\n\\n阴, 小雨 [...] 今天\\n 2周\\n 每月\\n 每小时\\n\\n# 上海 九月, 2025 天气\\n\\n 30天\\n 8月\\n 9月\\n 10月\\n 11月\\n 12月\\n 1月\\n 2月\\n 3月\\n 4月\\n 5月\\n 6月\\n 7月\\n\\n1 九月\\n\\n+29°+24°\\n\\n2 九月\\n\\n+30°+25°\\n\\n3 九月\\n\\n+30°+24°\\n\\n4 九月\\n\\n+29°+24°\\n\\n5 九月\\n\\n+29°+24°\\n\\n6 九月\\n\\n+29°+23°\\n\\n7 九月\\n\\n+28°+23°\\n\\n8 九月\\n\\n+29°+24°\\n\\n9 九月\\n\\n+29°+24°\\n\\n10 九月\\n\\n+29°+24°\\n\\n11 九月\\n\\n+28°+24°\\n\\n12 九月\\n\\n+28°+23°\\n\\n13 九月\\n\\n+28°+23°\\n\\n14 九月\\n\\n+28°+23°\\n\\n15 九月\\n\\n+27°+23°\\n\\n16 九月\\n\\n+28°+22°\\n\\n17 九月\\n\\n+28°+22°\\n\\n18 九月\\n\\n+27°+22°\\n\\n19 九月\\n\\n+27°+22°\\n\\n20 九月\\n\\n+27°+22°\\n\\n21 九月\\n\\n+27°+22°\\n\\n22 九月\\n\\n+25°+20°\\n\\n23 九月\\n\\n+26°+20°\\n\\n24 九月\\n\\n+27°+21°\\n\\n25 九月 [...] +26°+21°\\n\\n26 九月\\n\\n+26°+22°\\n\\n27 九月\\n\\n+27°+22°\\n\\n28 九月\\n\\n+26°+21°\\n\\n29 九月\\n\\n+25°+20°\\n\\n30 九月\\n\\n+25°+19°\\n\\n1 十月\\n\\n+25°+20°\\n\\n2 十月\\n\\n+26°+19°\\n\\n3 十月\\n\\n+25°+19°\\n\\n4 十月\\n\\n+25°+18°\\n\\n5 十月\\n\\n+24°+18°\\n\\n\\\\ 天气预报是根据过去 70 年的历史数据计算得出的\\n\\n## 九月 在 上海\\n\\n最大限度。 温度\\n+37°C\\n\\n分钟。 温度\\n+12,1°C\\n\\n月降水量\\n102,88毫米\\n\\n风速\\n27,35米/秒\\n\\n 最大限度。 温度\\n 分钟。 温度\\n\\n## 其他地区预测\\n\\n中国\\n世界\\n\\n上海\\n\\n+30°\\n\\n重庆\\n\\n+28°\\n\\n北京\\n\\n+25°\\n\\n成都\\n\\n+20°\\n\\n广州\\n\\n+33°\\n\\n深圳\\n\\n+29°\\n\\n天津\\n\\n+26°\\n\\n西安\\n\\n+20°\\n\\n武汉\\n\\n+31°\\n\\n杭州\\n\\n+31°\\n\\n东莞市\\n\\n+31°\\n\\n青岛市\\n\\n+28°\\n\\n哈尔滨\\n\\n+23°\\n\\n佛山市\\n\\n+33°\\n\\n合肥\\n\\n+27°\\n\\n南京\\n\\n+31°\\n\\n沈阳\\n\\n+22°\\n\\n南充\\n\\n+29°\", 'score': 0.8616433}]\u001B[0m\u001B[32;1m\u001B[1;3mDo I need to use a tool? No  \n",
      "Final Answer: 2025年9月9日上海的天气情况为：最高温度31°C，最低温度25°C，天气为小雨，风速为西北风2级，空气质量指数为28（优）。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '上海的呢？', 'chat_history': [HumanMessage(content='查询2025年9月9日北京的天气情况', additional_kwargs={}, response_metadata={}), AIMessage(content='根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。', additional_kwargs={}, response_metadata={}), HumanMessage(content='上海的呢？', additional_kwargs={}, response_metadata={}), AIMessage(content='2025年9月9日上海的天气情况为：最高温度31°C，最低温度25°C，天气为小雨，风速为西北风2级，空气质量指数为28（优）。', additional_kwargs={}, response_metadata={})], 'output': '2025年9月9日上海的天气情况为：最高温度31°C，最低温度25°C，天气为小雨，风速为西北风2级，空气质量指数为28（优）。'}\n"
     ]
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "举例2：自定义提示词模板",
   "id": "d19785f2a8bd801"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T03:46:16.359905Z",
     "start_time": "2025-10-01T03:46:11.331024Z"
    }
   },
   "cell_type": "code",
   "source": [
    "\n",
    "from langchain import hub\n",
    "from langchain.agents import create_react_agent\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "# 自定义提示词模板\n",
    "template = \"\"\"Assistant is a large language model trained by OpenAI.\n",
    "\n",
    "Assistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.\n",
    "\n",
    "Assistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.\n",
    "\n",
    "Overall, Assistant is a powerful tool that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist.\n",
    "\n",
    "TOOLS:\n",
    "------\n",
    "\n",
    "Assistant has access to the following tools:\n",
    "\n",
    "{tools}\n",
    "\n",
    "To use a tool, please use the following format:\n",
    "\n",
    "```\n",
    "Thought: Do I need to use a tool? Yes\n",
    "Action: the action to take, should be one of [{tool_names}]\n",
    "Action Input: the input to the action\n",
    "Observation: the result of the action\n",
    "```\n",
    "\n",
    "When you have a response to say to the Human, or if you do not need to use a tool, you MUST use the format:\n",
    "\n",
    "```\n",
    "Thought: Do I need to use a tool? No\n",
    "Final Answer: [your response here]\n",
    "```\n",
    "\n",
    "Begin!\n",
    "\n",
    "Previous conversation history:\n",
    "{chat_history}\n",
    "\n",
    "New input: {input}\n",
    "{agent_scratchpad}\n",
    "\"\"\"\n",
    "prompt_template = PromptTemplate.from_template(\n",
    "    template=template,\n",
    ")\n",
    "\n",
    "# 提供记忆的实例\n",
    "memory = ConversationBufferMemory(\n",
    "    return_messages=True,\n",
    "    memory_key=\"chat_history\",\n",
    ")\n",
    "\n",
    "# 获取Agent的实例：create_react_agent()\n",
    "agent = create_react_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    "    memory=memory,\n",
    "    handle_parsing_errors=True,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询2025年9月9日北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "ff07d5dab1b5058d",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? Yes\n",
      "Action: Search\n",
      "Action Input: 2025年9月9日 北京 天气情况\n",
      "```\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '北京市2025年9月的历史天气数据（中国） - Weather Spark', 'url': 'https://zh.weatherspark.com/h/m/131055/2025/9/2025%E5%B9%B49%E6%9C%88-%E4%B8%AD%E5%9B%BD%E3%80%81%E5%8C%97%E4%BA%AC%E5%B8%82-%E7%9A%84%E5%8E%86%E5%8F%B2%E5%A4%A9%E6%B0%94', 'content': '| 北京市2025年9月的天气历史 中国 此报告的数据来自北京首都国际机场。 查看附近所有的气象站  最新报告 — 下午4:30 2025年9月11日周四    23分钟之前    UTC 08:30  呼号 ZBAA  温度  30°C 热   |  |  |  --- | | 露点 | 20°C  闷热 | | 相对湿度 | 55% |  降水  无报告  刮风  18.0每小时公里 三级风   |  |  |  --- | | 风向 | 170°, S |  云量  晴空万里   |  |  |  --- | | 能见度 | 10.00公里 或更高 | | 海拔 | 1,010毫巴 |  原始：ZBAA 110830Z 17005MPS CAVOK 30/20 Q1010 NOSIG  此报告显示北京市的过去天气，提供了2025年9月的天气历史。 它突出了我们所有的可用历史天气数据序列，包括北京市2025年9月的温度历史。 您可以通过点击图表，从年份深化至一个具体的月份，甚至具体的一天的报告。  北京市2025年9月的温度历史 2025年年秋季  链接  下载  比较  平均值 [...] 60% 大部分多云   80% 阴天   100%  无重要云未检测到云晴空万里  每小时所报告的云彩覆盖，以天空的云彩覆盖百分比分类。    2025年9月北京市的观察天气 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年    雾薄雾细雨小雨中雨大雨冻雨雨夹雪雪粒小雪中雪大雪冰雹雷雨  每小时观察到的天气，按类型着色（按严重程度的排序）。 如果存在多项报告，将显示最严重的代码。  | 白天 | 观察 | 降水 | 代码 |  ---  --- | | 9月3日周三 | Mist |  | BR | | 9月4日周四 | Mist |  | BR | | 9月5日周五 | Light Rain、Mist |  | -RA、BR | | 9月9日周二 | Recent Thunderstorm、Thunderstorm、Thunderstorm with Light Rain、Thunderstorm with Rain、Light Rain、Showers of Light Rain |  | [...] 下午4:16 | 东南 | 下午8:46 | 南 | 390,437公里 | | 4日 |  | 88%  | 上午1:17 | 西南 | 下午4:56 | 东南偏东 | 下午9:41 | 南 | 384,922公里 | | 5日 |  | 94%  | 上午2:26 | 西南偏西 | 下午5:30 | 东南偏东 | 下午10:34 | 南 | 379,365公里 | | 6日 |  | 98%  | 上午3:38 | 西南偏西 | 下午5:59 | 东南偏东 | 下午11:24 | 南 | 374,234公里 | | 7日 |  | 100%  | 上午4:50 | 西南偏西 | 下午6:25 | 东   | 8日 |  | 100%  | 上午6:03 | 西 | 下午6:49 | 东 | 上午12:13 | 南 | 369,959公里 | | 9日 |  | 99%  | 上午7:17 | 西 | 下午7:13 | 东 | 上午1:00 | 南 | 366,869公里 | | 10日 |  | 95%  | 上午8:32 | 西北偏西 | 下午7:39 | 东北偏东 |', 'score': 0.93191636}, {'title': '北京市在九月2025 的天氣：氣溫與氣候 - Climate-Data.org', 'url': 'https://zh.climate-data.org/%E4%BA%9E%E6%B4%B2/%E4%B8%AD%E5%9B%BD/%E5%8C%97%E4%BA%AC%E5%B8%82-885/r/%E4%B9%9D%E6%9C%88-9/', 'content': '##\\n\\n# 北京市 在 九月 的天氣情況\\n\\n您打算在 九月 2025 到 北京市 度假，希望天氣宜人嗎？在這裡您可以找到 北京市 在 九月 的所有天氣資訊：\\n\\n >>北京市 在 九月 的天氣與氣候概況\\n >>北京市 每月天氣 // 天氣平均值\\n >>北京市 在 九月 的天氣平均狀況\\n >>北京市 的當前溫度及天氣預報\\n\\n在 九月，北京市 平均最暖的一天是 01.09，最高溫達到 28.9°C 。最冷的一天是 29.09，最低溫約為 9.4°C 。在本月前三分之一期間，最高溫平均為 28.1°C，最低溫約為 14.5°C 。從 11 到 20 日，平均最高溫為 26.4°C，平均最低溫為 12.3°C 。月底時，最高溫達到 24.8°C，最低溫降至 10.3°C 。最溫暖的連續 10 天是 1-10，平均最高溫為 19.7°C，而最冷的連續 10 天是 21-10，平均最低溫約為 15.6°C。 [...] |  | 溫度 (°C) | 溫度 最大值 (°C) | 溫度 分鐘 (°C) | 降水量 (mm) | 平均日照時數 (小時) |\\n ---  ---  --- |\\n| 1. 九月 | 21 °C | 26 °C | 16 °C | 11.0 mm | 9.9 |\\n| 2. 九月 | 21 °C | 26 °C | 15 °C | 14.3 mm | 9.7 |\\n| 3. 九月 | 20 °C | 26 °C | 15 °C | 11.7 mm | 10.3 |\\n| 4. 九月 | 20 °C | 25 °C | 15 °C | 7.1 mm | 9.4 |\\n| 5. 九月 | 20 °C | 25 °C | 14 °C | 4.0 mm | 9.9 |\\n| 6. 九月 | 20 °C | 25 °C | 14 °C | 8.7 mm | 10.4 |\\n| 7. 九月 | 19 °C | 25 °C | 14 °C | 8.9 mm | 10.1 |\\n| 8. 九月 | 19 °C | 24 °C | 14 °C | 5.8 mm | 9.8 | [...] | 9. 九月 | 19 °C | 24 °C | 14 °C | 7.4 mm | 10.0 |\\n| 10. 九月 | 18 °C | 24 °C | 13 °C | 6.1 mm | 9.9 |\\n| 11. 九月 | 19 °C | 24 °C | 14 °C | 7.3 mm | 10.3 |\\n| 12. 九月 | 19 °C | 23 °C | 14 °C | 7.4 mm | 9.4 |\\n| 13. 九月 | 19 °C | 24 °C | 13 °C | 6.2 mm | 9.1 |\\n| 14. 九月 | 18 °C | 23 °C | 13 °C | 9.4 mm | 9.3 |\\n| 15. 九月 | 18 °C | 23 °C | 13 °C | 7.6 mm | 8.8 |\\n| 16. 九月 | 17 °C | 23 °C | 12 °C | 8.0 mm | 8.7 |\\n| 17. 九月 | 17 °C | 23 °C | 12 °C | 4.5 mm | 8.3 |', 'score': 0.9039154}, {'title': '北京2025年9月历史天气', 'url': 'https://tianqi.2345.com/wea_history/54511.htm', 'content': '切换国际城市\\n\\n确定 取消\\n\\n 2011年\\n 2012年\\n 2013年\\n 2014年\\n 2015年\\n 2016年\\n 2017年\\n 2018年\\n 2019年\\n 2020年\\n 2021年\\n 2022年\\n 2023年\\n 2024年\\n 2025年\\n\\n 1月\\n 2月\\n 3月\\n 4月\\n 5月\\n 6月\\n 7月\\n 8月\\n 9月\\n 10月\\n 11月\\n 12月\\n\\n 平均高温：27°    平均低温：18°\\n 极端高温：32°(2025-09-01)\\n 极端低温：12°(2025-09-17)\\n 平均空气质量指数：42\\n 空气最好：19 优(09月17日)\\n 空气最差：71良(09月04日) [...] | 2025-09-09 周二 | 30° | 20° | 阴~小雨 | 东南风1级 | 64 良 |\\n| 2025-09-10 周三 | 26° | 21° | 多云~阴 | 东南风1级 | 37 优 |\\n| 2025-09-11 周四 | 30° | 21° | 多云 | 南风3级 | 60 良 |\\n| 2025-09-12 周五 | 29° | 19° | 多云 | 东南风1级 | 68 良 |\\n| 2025-09-13 周六 | 29° | 20° | 多云~晴 | 西南风3级 | 50 优 |\\n| 2025-09-14 周日 | 32° | 18° | 多云 | 西北风3级 | 34 优 |\\n| 2025-09-15 周一 | 24° | 19° | 小雨~雷阵雨 | 北风2级 | 23 优 |\\n| 2025-09-16 周二 | 25° | 13° | 阴~多云 | 东北风3级 | 24 优 |\\n| 2025-09-17 周三 | 24° | 12° | 阴~晴 | 北风2级 | 19 优 | [...] | 日期 | 最高温 | 最低温 | 天气 | 风力风向 | 空气质量指数 |\\n ---  ---  --- |\\n| 2025-09-01 周一 | 32° | 22° | 多云 | 南风1级 | 35 优 |\\n| 2025-09-02 周二 | 30° | 23° | 阴~阵雨 | 南风2级 | 40 优 |\\n| 2025-09-03 周三 | 31° | 22° | 阴~多云 | 东南风2级 | 49 优 |\\n| 2025-09-04 周四 | 31° | 21° | 多云~阴 | 东南风2级 | 71 良 |\\n| 2025-09-05 周五 | 26° | 19° | 小雨~多云 | 西北风1级 | 48 优 |\\n| 2025-09-06 周六 | 31° | 18° | 晴 | 西南风1级 | 31 优 |\\n| 2025-09-07 周日 | 31° | 17° | 多云~晴 | 东北风1级 | 36 优 |\\n| 2025-09-08 周一 | 31° | 19° | 晴~雷阵雨 | 南风1级 | 27 优 |', 'score': 0.89501935}]\u001B[0m\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? No\n",
      "Final Answer: 根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。 \n",
      "```\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询2025年9月9日北京的天气情况', 'chat_history': [HumanMessage(content='查询2025年9月9日北京的天气情况', additional_kwargs={}, response_metadata={}), AIMessage(content='根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。 \\n```', additional_kwargs={}, response_metadata={})], 'output': '根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。 \\n```'}\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-01T03:46:38.021218Z",
     "start_time": "2025-10-01T03:46:33.397520Z"
    }
   },
   "cell_type": "code",
   "source": [
    "result = agent_executor.invoke({\"input\":\"上海的呢？\"})\n",
    "\n",
    "print(result)"
   ],
   "id": "c1fa87e479ca54ce",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? Yes\n",
      "Action: Search\n",
      "Action Input: 2025年9月9日上海的天气情况\n",
      "```\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '中国上海2025年9月的天气历史中国', 'url': 'https://zh.weatherspark.com/h/m/137446/2025/9/2025年9月-中国、中国上海-的历史天气', 'content': '凉爽   18°C   舒适   24°C   暖和   29°C   热   35°C   酷热  每小时所报告的温度，加以数带着色。 阴影叠加表示夜晚和民用曙光/暮光。  © OpenStreetMap contributors  将中国上海与另一城市相比较：  2025年9月中国上海的云量 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年  0%   晴天   20%   大部分晴天   40%   部分多云   60%   大部分多云   80%   阴天   100%  无重要云未检测到云晴空万里  每小时所报告的云彩覆盖，以天空的云彩覆盖百分比分类。  2025年9月中国上海的观察天气 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年  雾薄雾细雨小雨中雨大雨冻雨雨夹雪雪粒小雪中雪大雪冰雹雷雨  每小时观察到的天气，按类型着色（按严重程度的排序）。 如果存在多项报告，将显示最严重的代码。  | 白天 | [...] | 19501960197019801990200020102020  2016201720182019202020212022202320242025  春季夏季秋季冬季  1月2月3月4月5月6月7月8月9月10月11月12月  123456789101112131415161718192021222324252627282930 中国上海2025年9月的天气历史 中国 此报告的数据来自上海虹桥国际机场。 查看附近所有的气象站  最新报告 — 下午10:30 2025年9月28日周日    25分钟之前    UTC 14:30  呼号 ZSSS  温度  28°C 暖和   |  |  |  --- | | 露点 | 24°C  极为难受 | | 相对湿度 | 79% |  降水  无报告  刮风  10.8每小时公里 二级风   |  |  |  --- | | 风向 | 50°, NE |  云量  部分多云   701米   |  |  | 晴时多云 914米 |   |  |  |  --- | | 能见度 | 10.00公里 | | 海拔 | 1,014毫巴 | [...] 404,873公里 | | 26日 |  | 18% | 上午9:36 | 东南偏东 | 下午7:56 | 西南偏西  下午2:46 | 南 | 405,539公里 | | 27日 |  | 26% | 上午10:34 | 东南偏东 | 下午8:35 | 西南偏西  下午3:34 | 南 | 405,093公里 | | 28日 |  | 34% | 上午11:31 | 东南偏东 | 下午9:21 | 西南偏西  下午4:25 | 南 | 403,402公里 | | 29日 |  | 44% | 下午12:25 | 东南 | 下午10:12 | 西南  下午5:19 | 南 | 400,413公里 | | 30日 |  | 50% | 下午1:16 | 东南偏东 | 下午11:09 | 西南偏西  下午6:13 | 南 | 396,186公里 |  2025年9月 中国上海的湿度舒适水平 2025年年秋季  链接  下载  比较  平均值  历史：123456789月1011122024年2023年2022年2021年  干燥   13°C   舒适   16°C   潮湿', 'score': 0.9197076}, {'title': '上海2025年9月历史天气', 'url': 'https://tianqi.2345.com/wea_history/58362.htm', 'content': '切换国际城市\\n\\n确定 取消\\n\\n 2011年\\n 2012年\\n 2013年\\n 2014年\\n 2015年\\n 2016年\\n 2017年\\n 2018年\\n 2019年\\n 2020年\\n 2021年\\n 2022年\\n 2023年\\n 2024年\\n 2025年\\n\\n 1月\\n 2月\\n 3月\\n 4月\\n 5月\\n 6月\\n 7月\\n 8月\\n 9月\\n 10月\\n 11月\\n 12月\\n\\n 平均高温：33°    平均低温：26°\\n 极端高温：37°(2025-09-06)\\n 极端低温：22°(2025-09-20)\\n 平均空气质量指数：34\\n 空气最好：22 优(09月24日)\\n 空气最差：66良(09月07日) [...] | 2025-09-09 周二 | 31° | 25° | 小雨 | 西北风2级 | 28 优 |\\n| 2025-09-10 周三 | 30° | 26° | 阴~小雨 | 东北风3级 | 32 优 |\\n| 2025-09-11 周四 | 32° | 26° | 多云~阴 | 东风3级 | 37 优 |\\n| 2025-09-12 周五 | 35° | 26° | 多云~小雨 | 南风3级 | 45 优 |\\n| 2025-09-13 周六 | 34° | 26° | 阴~小雨 | 西北风2级 | 48 优 |\\n| 2025-09-14 周日 | 33° | 26° | 多云~小雨 | 东风1级 | 45 优 |\\n| 2025-09-15 周一 | 35° | 27° | 阴~多云 | 东南风2级 | 45 优 |\\n| 2025-09-16 周二 | 36° | 28° | 多云~晴 | 南风2级 | 38 优 |\\n| 2025-09-17 周三 | 37° | 25° | 阴~小雨 | 西北风2级 | 36 优 | [...] 凤翔空气质量\\n 郓城空气质量\\n 洮南空气质量\\n 南宁空气质量\\n 黑河空气质量\\n 长春空气质量\\n 新沂空气质量\\n 青州空气质量\\n 澳门空气质量\\n 内乡空气质量\\n 澧县空气质量\\n 兰溪空气质量\\n 长岭空气质量\\n 成安空气质量\\n 界首空气质量\\n 霸州空气质量\\n 射阳空气质量\\n 磁县空气质量\\n 沈阳空气质量\\n 随州空气质量\\n 洛南空气质量\\n 东台空气质量\\n 东宁空气质量\\n 二连浩特空气质量\\n 宜城空气质量\\n 长兴空气质量\\n 涿州空气质量\\n 涉县空气质量\\n 葫芦岛空气质量\\n 咸宁空气质量\\n\\n 武家庄镇天气\\n 皤滩乡天气\\n 南部矿区管委会天气\\n 潘店镇天气\\n 盘龙街道天气\\n 坂东镇天气\\n 盘湾镇天气\\n 青锋农场天气\\n 雉街彝族苗族乡天气\\n 磻溪镇天气\\n 林堡乡天气\\n 树堡乡天气\\n 潘庄镇天气\\n 潘庄镇天气\\n 保家镇天气\\n 前岗乡天气\\n 鲍集镇天气\\n 阳春乡天气\\n 辉渠镇天气\\n 盐井镇天气\\n 玉河镇天气\\n 独石沟乡天气\\n 绵山镇天气\\n 保兴镇天气\\n 宝秀镇天气\\n 城关镇天气\\n 兴隆洼镇天气\\n 文峰区天气\\n 嘎达布其镇天气\\n 宝林镇天气', 'score': 0.90965873}, {'title': '上海九月, 2025 天气', 'url': 'https://www.meteoprog.com/cn/weather/Szanghaj/month/september/', 'content': \"Deutsch\\n English\\n Español\\n Français\\n Hrvatski\\n Indonesia\\n Latviešu\\n Lietuvių\\n Magyar\\n Nederlands\\n O'zbek\\n Português\\n Polski\\n Romnă\\n Slovenský\\n Suomi\\n Svenska\\n Türkçe\\n Čeština\\n Ελληνική\\n Български\\n Српски\\n Русский\\n Українська\\n عربي\\n 汉语\\n\\n阴, 小雨 [...] 今天\\n 2周\\n 每月\\n 每小时\\n\\n# 上海 九月, 2025 天气\\n\\n 30天\\n 8月\\n 9月\\n 10月\\n 11月\\n 12月\\n 1月\\n 2月\\n 3月\\n 4月\\n 5月\\n 6月\\n 7月\\n\\n1 九月\\n\\n+29°+24°\\n\\n2 九月\\n\\n+30°+25°\\n\\n3 九月\\n\\n+30°+24°\\n\\n4 九月\\n\\n+29°+24°\\n\\n5 九月\\n\\n+29°+24°\\n\\n6 九月\\n\\n+29°+23°\\n\\n7 九月\\n\\n+28°+23°\\n\\n8 九月\\n\\n+29°+24°\\n\\n9 九月\\n\\n+29°+24°\\n\\n10 九月\\n\\n+29°+24°\\n\\n11 九月\\n\\n+28°+24°\\n\\n12 九月\\n\\n+28°+23°\\n\\n13 九月\\n\\n+28°+23°\\n\\n14 九月\\n\\n+28°+23°\\n\\n15 九月\\n\\n+27°+23°\\n\\n16 九月\\n\\n+28°+22°\\n\\n17 九月\\n\\n+28°+22°\\n\\n18 九月\\n\\n+27°+22°\\n\\n19 九月\\n\\n+27°+22°\\n\\n20 九月\\n\\n+27°+22°\\n\\n21 九月\\n\\n+27°+22°\\n\\n22 九月\\n\\n+25°+20°\\n\\n23 九月\\n\\n+26°+20°\\n\\n24 九月\\n\\n+27°+21°\\n\\n25 九月 [...] +26°+21°\\n\\n26 九月\\n\\n+26°+22°\\n\\n27 九月\\n\\n+27°+22°\\n\\n28 九月\\n\\n+26°+21°\\n\\n29 九月\\n\\n+25°+20°\\n\\n30 九月\\n\\n+25°+19°\\n\\n1 十月\\n\\n+25°+20°\\n\\n2 十月\\n\\n+26°+19°\\n\\n3 十月\\n\\n+25°+19°\\n\\n4 十月\\n\\n+25°+18°\\n\\n5 十月\\n\\n+24°+18°\\n\\n\\\\ 天气预报是根据过去 70 年的历史数据计算得出的\\n\\n## 九月 在 上海\\n\\n最大限度。 温度\\n+37°C\\n\\n分钟。 温度\\n+12,1°C\\n\\n月降水量\\n102,88毫米\\n\\n风速\\n27,35米/秒\\n\\n 最大限度。 温度\\n 分钟。 温度\\n\\n## 其他地区预测\\n\\n中国\\n世界\\n\\n上海\\n\\n+30°\\n\\n重庆\\n\\n+28°\\n\\n北京\\n\\n+25°\\n\\n成都\\n\\n+20°\\n\\n广州\\n\\n+33°\\n\\n深圳\\n\\n+29°\\n\\n天津\\n\\n+26°\\n\\n西安\\n\\n+20°\\n\\n武汉\\n\\n+31°\\n\\n杭州\\n\\n+31°\\n\\n东莞市\\n\\n+31°\\n\\n青岛市\\n\\n+28°\\n\\n哈尔滨\\n\\n+23°\\n\\n佛山市\\n\\n+33°\\n\\n合肥\\n\\n+27°\\n\\n南京\\n\\n+31°\\n\\n沈阳\\n\\n+22°\\n\\n南充\\n\\n+29°\", 'score': 0.8616433}]\u001B[0m\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? No\n",
      "Final Answer: 2025年9月9日上海的天气情况为：最高温度31°C，最低温度25°C，天气为小雨，风速为西北风2级，空气质量指数为28（优）。\n",
      "```\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '上海的呢？', 'chat_history': [HumanMessage(content='查询2025年9月9日北京的天气情况', additional_kwargs={}, response_metadata={}), AIMessage(content='根据历史天气数据，2025年9月9日北京的天气情况为：最高温度30°C，最低温度20°C，天气为阴天并伴有小雨，风速为东南风1级，空气质量指数为64（良）。 \\n```', additional_kwargs={}, response_metadata={}), HumanMessage(content='上海的呢？', additional_kwargs={}, response_metadata={}), AIMessage(content='2025年9月9日上海的天气情况为：最高温度31°C，最低温度25°C，天气为小雨，风速为西北风2级，空气质量指数为28（优）。\\n```', additional_kwargs={}, response_metadata={})], 'output': '2025年9月9日上海的天气情况为：最高温度31°C，最低温度25°C，天气为小雨，风速为西北风2级，空气质量指数为28（优）。\\n```'}\n"
     ]
    }
   ],
   "execution_count": 6
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
